package busyStudent;

import java.awt.geom.Area;
import java.util.Arrays;

//public class Solution {
//    public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
////        int ans = 0;
////        for (int i = 0; i < startTime.length; i++) {
////            if(check(startTime[i],endTime[i],queryTime)){
////                ans++;
////            }
////        }
////        return ans;
//
//        // 差分数组
//
//    }
////    private boolean check(int startTime,int endTime,int queryTime){
////        return (startTime<=queryTime&&endTime>=queryTime);
////    }
//}
class Solution {
    public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
//        int n = startTime.length;
//        int maxEndTime = Arrays.stream(endTime).max().getAsInt();
//        if (queryTime > maxEndTime) {
//            return 0;
//        }
//        int[] cnt = new int[maxEndTime + 2];
//        for (int i = 0; i < n; i++) {
//            cnt[startTime[i]]++;
//            cnt[endTime[i] + 1]--;
//        }
//        int ans = 0;
//        for (int i = 0; i <= queryTime; i++) {
//            ans += cnt[i];
//        }
//        return ans;

        int n = startTime.length;
        int maxEndTime = Arrays.stream(endTime).max().getAsInt();
        if(queryTime>maxEndTime){
            return 0;
        }
        int[] cnt = new int[maxEndTime+2]; // 差分数组
        for (int i = 0; i < n; i++) {
            cnt[startTime[i]]++;
            cnt[endTime[i]+1]--; // 每个区间段的人数+1 最开始都是0人。
        }
        // 差分数组前缀和还原的数组就是每个区间段有多少人
        int ans = 0;
        for (int i = 1; i < cnt.length; i++) {
            cnt[i] = cnt[i]+cnt[i-1]; // 前缀和
        }
        // cnt[i] 表示在i的时间的时候有多少人在学习
        return cnt[queryTime];
    }
}

